1. Field of the Invention
The present invention relates to a method and a device, respectively, for synchronizing of data between a synchronizing client device and a synchronizing server device and further to the respective synchronizing devices. More particular, the present invention relates to a method and a device for synchronizing of data, respectively, allowing for improved handling of an interruption of an active synchronization process.
2. Description of Related Art
The synchronization of data is a well known concept or technique for users, respectively, having at least two different electronic devices in use and processing the same kind of data with these electronic devices. In general, synchronization takes place between a terminal device (e.g., a mobile phone) and a server device (e.g., an application in a local PC or a dedicated synchronization server). Data from terminals, such as portable computers, PDA terminals (personal digital assistant), mobile phones, mobile stations or pagers, can be synchronized with networked devices acting as synchronization servers being represented by networked applications, applications of desktop computers or with other managing applications of data stores of telecommunications systems, wherein the term “data store” should be understood as broad as possible, i.e. shall cover arbitrary sets of data. In particular data of a calendar, data of contacts, data of e-mail applications as well as data relating to device/application settings and configurations are typically synchronized.
Synchronization has been based on the use of different manufacturer-specific protocols which are incompatible. This restricts the use of terminal or data types and often causes troubles to the user. In mobile communication, in particular, it is important that data can be retrieved and updated regardless of the terminal and application used.
To improve synchronization of application data, a language known and referred to as synchronization markup language SyncML has been designed, which is based on the extensible markup language (XML). By using a SyncML synchronization protocol, which employs messages in the SyncML format, data of any application can be synchronized between networked terminals and a network server of any kind. The SyncML synchronization protocol works both in wireless and in fixed networks and supports several transmission protocols. The above presented SyncML synchronization technology addresses in particular the synchronization of data stores or databases, respectively.
Conventionally, a synchronization of data records is performed at a distinct point in time in order to harmonize, i.e. to bring into correspondence, two distinct predefined sets of data records stored at different storage places, i.e. at different synchronizing devices managing and employing the storage places, resulting in two equivalent sets of data records at both storage places at this distinct point in time. The synchronization of data records performed at a distinct point in time is further designated as a synchronization session. The synchronization of the sets of data records is obtained during such a synchronization session by exchanging information, instructions and commands allowing both participating synchronizing devices for modifying their stored sets of data records resulting in a harmonization of them, wherein such modification operations comprises adding of data, removing of data, appending data to current data, updating of data and the like. The exchange of required information and commands is for practical purposes carried out by communicating between the synchronizing devices one or more messages each containing a distinct subset of the total required information, instructions and commands necessary to perform the harmonizing at each synchronizing devices. Moreover, each of the one or more messages is acknowledged in order to indicate successful operation in accordance with its message information contained therein.
Basically, synchronization processes as described above can be handled and performed in either a full synchronization process also designated as slow synchronization or an incremental synchronization process also designated as normal or fast synchronization, respectively. During a synchronization session performing a full or slow synchronization process, respectively, all predefined sets of data records in both participating synchronizing devices are harmonized. During a synchronization session performing an incremental or fast synchronization process, respectively, a point in time of the last completed synchronization session is logged in both participating synchronizing devices and in case the logged point in time stored in both synchronizing devices matches only data records being modified since this logged point in time are selected for synchronization all other are excluded from the synchronization process. Therefore, a change log may be maintained by the synchronizing devices logging the modification, adding or deleting point of time of data records. Alternatively, the modifications may be determined in another manner such as investigating the modification time stamps of the records, if such exist. Both synchronization processes, i.e. the so-called slow and the so-called fast (normal) synchronization are defined and used in the SyncML standard. Further types of synchronization processes are available and used but these further synchronization processes can be reduced to the aforementioned basic synchronization processes.
When a record and/or a group of records has been synchronized with the other database, an acknowledgement is sent back to the sender of the record. Two fundamental ways for handling the acknowledgements can be implemented in synchronization applications. In the first implementation each successful synchronization of a data record or a batch of data records is acknowledged and logged by the synchronizing devices preferably in such one or more change logs. In the second implementation the acknowledgements are handled at the end of a synchronization session, i.e. as soon as both synchronizing devices indicate a proper closing of the synchronization session and the corresponding employed communication connected. Further, the handling of the acknowledgements at the end of a synchronization session and the updating of a point in time specifying the last completed synchronization session is operated substantially at the same time. In case the synchronization session is carried out in the way of a slow synchronization process taking into account the point in time specifying the last completed synchronization session is obviously not required.
The first implementation primarily addresses synchronization applications used for synchronizing for example distributed databases with high-speed connection to each other in order to maintain and ensure data integrity. In such implementations, the capacity requirements of storing and maintaining change logs for each data record, the requirement of processing capability for processing the change logs as well as the requirement of network bandwidth for exchanging necessary acknowledgements are of minor importance. In view of synchronizing data stored in small electronic device such as mobile phones, handhelds, personal digital assistants, communicators and the like the storage capacity and processing power are limited such that storing, maintaining and processing of change logs for each data record is cumbersome, inefficient and sometimes not even possible. Moreover, the network traffic resulting from the required acknowledgements is not acceptable as it is also expensive and time-intensive in mobile communication environments.
The second implementation, wherein the updating of time stamps and handling the acknowledgements for the item is carried out at the end of the session, is suitable for use in small electronic devices and supported by the SyncML standard. Nevertheless, this implementation raises the problem that an interruption of a currently performed synchronization session is not provided for. The maintaining of the synchronization information exchanged during a partially operated synchronization session is not possible since, the updating of the time stamps (synchronization anchors) and the handling of the acknowledgements at the end of the synchronization session is not achieved due to the interruption. Even if the acknowledgements of data items are handled during the session, since the time stamps are updated only at the end of the session, interruption of a slow synchronization leads to loss of the already processed synchronization information. In both the above cases the synchronization session has to be repeated completely in order to ensure data integrity. Depending on the amount of synchronization related information, i.e. depending on the number of data records to be synchronized, an even huge number of messages are exchanged during a single synchronization session normally comprising several synchronization messages. For example 400 data records of 500 data records may have been synchronized during a synchronization session and an interruption occurs. In the following synchronization session all of the 500 data records have to synchronized again independent of whether the synchronization is operated as either a fast or a slow synchronization process.